Cover TOC Chap Prev Chap Prev Fig Next Fig Next Chap

Chapter 30: Creating Program Scripts

../ch30/30fig03.gif
Figure 30.3

A pair of filters used to create a momentary on-off switch.

30fig03.wrl
Click on the image to view the VRML scene.

#VRML V2.0 utf8
# The VRML 2.0 Sourcebook
# Copyright (c) 1997
# Andrea L. Ames, David R. Nadeau, and John L. Moreland
Group {
    children [
    # Background
        Background {
            skyColor    [ 1.0 0.0 0.0,  1.0 0.4 0.0,  1.0 1.0 0.0 ]
            skyAngle    [ 1.309, 1.571 ]
            groundColor [ 0.1 0.1 0.0,  0.5 0.25 0.2,  0.6 0.6 0.2 ]
            groundAngle [ 1.309, 1.571 ]
        },
    # On-off switch
        Shape {
            appearance Appearance {
                material Material {
                    diffuseColor 1.0 0.3 0.3
                }
            }
            geometry Sphere { }
        },
        DEF Touch TouchSensor { },
    # Sound
        Sound {
            source DEF Audio AudioClip {
                url "willow1.wav"
                loop TRUE
                stopTime 1.0
            }
        },
    # Filters
        DEF Filter Script {
            url "javascript:
                function set_boolean( bool, eventTime ) {
                    if ( bool == true ) { true_changed  = true; }
                    else                { false_changed = true; }
                }"
            eventIn  SFBool set_boolean
            eventOut SFBool true_changed
            eventOut SFBool false_changed
        },
        DEF TimeFilter Script {
            url "javascript:
                function set_boolean( bool, timeStamp ) {
                    eventTime = timeStamp;
                }"
            eventIn  SFBool set_boolean
            eventOut SFTime eventTime
        }
    ]
}
ROUTE Touch.isActive       TO Filter.set_boolean
ROUTE Filter.true_changed  TO TimeFilter.set_boolean
ROUTE TimeFilter.eventTime TO Audio.set_startTime
ROUTE Touch.touchTime      TO Audio.set_stopTime